#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//int main()
//{
//	double pi = 3.14;
//	printf("%lf\n", pi);
//	printf("%.2lf\n", pi); // .xf（x为小数点保留几位数）
//
//
//
//	return 0;
//}

//int main()
//{
//	// 移位操作符 移动的是它的二进制位
//	// << 左移
//	// >> 右动
//	int a = 1;
//	// 整形1占4个字节-32bit位
//	// 0000000000000000000000000000001
//	int b = a << 1;
//	// 0000000000000000000000000000010  左边丢弃，右边补0
//	printf("%d\n", a);
//	printf("%d\n", b);
//
//	return 0;
//}

#include <stdio.h>

//int main()
//{
//	//位操作 依然是二进制位
//
//	// & 按位与   都为真，则返回真，只要出现假，就返回假
//	int a = 3; //真
//	int b = 5; //真
//	int c = a & b; //按位与
//	// 011
//	// 101
//	// 001
//	// R→ 1 //真
//	printf("%d\n", c);
//
//	int d = a | b;// 按位或  有真则为真，无则假，只要出现真，就返回真
//	// 011
//	// 101
//	// 111
//	// R→ 7
//	printf("%d\n", d);
//
//	int e = a ^ b;// 按位异或  相同为假，相异为真   11\ 00-> 0   10 -> 1
//	//异或的计算规律
//	//对应的二进制位相同，则为0
//	//对应的二进制位相异，则为1
//	// 011
//	// 101
//	// 110
//	// R→6
//	printf("%d\n", e);
//
//	return 0;
//}

//#define ADD(X, Y) X+Y
//#define ADD1(X, Y) ((X)+(Y))
//int main()
//{
//	printf("%d\n", 4 * ADD(2, 3));
//	//             4*2+3 = 11
//	printf("%d\n", 4 * ADD1(2, 3));
//	//             4*(2+3) = 20
//
//	return 0;
//}

//int my_strlen(char* s)
//{
//	if (*s == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(s + 1);
//
//
//}
//void  reverse_string(char* s)
//{
//	int len = my_strlen(s);
//	int left = 0;
//	int right = len - 1;
//
//	while (left < right)
//	{
//		char tmp = *(s + left);
//		*(s + left) = *(s + right);
//		*(s + right) = tmp;
//
//		left++;
//		right--;
//	}
//}
//int main()
//{
//	char arr[] = "abcdefghijklmn";
//	reverse_string(arr);
//	printf("%s", arr);
//
//	return 0;
//}

//int my_strlen(char* s)
//{
//	if (*s == '\0')
//		return 0;
//	else
//		return 1 + my_strlen(s + 1);
//
//
//}
//void  reverse_string(char* s)
//{
//	int len = 0;
//	if ((len = my_strlen(s)) >= 2)
//	{
//		int left = 0;
//		int right = len - 1;
//		char tmp = s[left];
//		s[left] = s[right];
//		s[right] = tmp;
//
//		s[right - 1] = '\0';
//	}
//	else
//		return;
//}
//int main()
//{
//	char arr[] = "abcdefghijklmn";
//	reverse_string(arr);
//	printf("%s", arr);
//
//	return 0;
//}

//int my_strlen(char* str) {
//    int count = 0;
//    while (*str != '\0') {
//        count++;
//        str++;
//    }
//    return count;
//}
//
//void reverse_string(char* str) {
//
//    if (*str = '\0')//避免上来就是空字符串，以及每次调用对空字符串也能判断
//        return;
//    int len = my_strlen(str);
//    int left = 0; // 最左下标
//    int right = len - 1; // 最右下标
//
//    char tmp = str[left];
//    str[left] = str[right];
//    str[right] = '\0';
//
//    // 判断条件
//    if (my_strlen(str + 1) >= 2) {
//        reverse_string(str + 1);
//    }
//
//    str[right] = tmp;//把tmp里面的值（left的值）放进right的时候 先伪造一个字符串
//}
//
//int main()
//{
//    char arr[] = "abcdef";
//
//    reverse_string(arr);
//    printf("%s\n", arr);
//
//    return 0;
//}

//int DigitSum(int n)
//{
//	if (n >= 10)
//	{
//		return n % 10 + DigitSum(n / 10);
//	}
//	return n;
//
//}
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//
//	int sum = DigitSum(num);
//	printf("%d", sum);
//
//	return 0;
//}

//double Pow(int n, int k)
//{
//	if (k == 0)
//		return 1;
//	else if (k > 0)
//		return n * Pow(n, k - 1);
//	else
//		return 1 / Pow(n, -k);
//
//}
//int main()
//{
//	int n = 0;
//	int k = 0;
//	scanf("%d %d", &n, &k);
//	double ret = Pow(n, k);
//	printf("%lf", ret);
//	return 0;
//}


//int main()
//{
//	char ch1[5] = { 'b', 'i', 't' };
//	char ch2[] = { 'b', 'i', 't' };
//
//	char ch3[5] = "bit";  // 'b', 'i', 't', '\0', '0'
//	char ch4[] = "bit";  // 'b', 'i', ''t, '\0'
//
//	return 0;
//
//}



////冒泡排序 达到升序效果
//void bubble_sort(int* arr, int sz)
//{
//	int i = 0;
//	int j = 0;
//
//	for (i = 0; i < sz - 1; i++)//10个数 只用对比9趟
//	{
//		int flag = 1;//放在这里 每一趟进来falg都会重置为0
//		for (j = 0; j < sz - 1 - i; j++)//第一次 对全部比较 即（下标0~9（j最大能取到9））往后j大极限值逐1递减 
//		{
//			if (arr[j] > arr[j + 1])
//			{
//				int tmp = 0;
//				tmp = arr[j];
//				arr[j] = arr[j + 1];
//				arr[j + 1] = tmp;
//
//				flag = 0;//代表并不是有序（升序）的
//			}
//
//			if (flag == 1)//为真 即代表是有序的（升序）的
//				break;
//		}
//	}
//
//
//}
//
//int main()
//{
//	int arr[] = { 10,9,8,7,6,5,4,3,2,1 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	bubble_sort(arr, sz);
//
//	int i = 0;
//	for (i = 0; i < sz; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}